# -*- coding: utf-8 -*-

"""
Moduł odpowiedzialny za budowę ścian ograniczających przestrzeń symulacji.

B{Moduł zawiera:}
    1. Klasa Wall
        - Metoda __init__
        - Metoda getPoint1
        - Metoda getPoint2
        - Metoda Draw
"""

from __future__ import unicode_literals
import wx



class Wall(object):
    """
    Klasa reprezentująca obiekt ściany - nieruchomą przeszkodę dla piłeczek.
    """
    
    """
    Klasa reprezentująca obiekt ściany - nieruchomą przeszkodę dla piłeczek.
    """
    
    PenColour = "Red"
    """
    Zmienna określająca kolor konturu ściany.
    """
    PenWidth = 1
    """
    Zmienna określająca szerokość konturu ściany.
    """
    PenStyle = wx.PENSTYLE_SOLID
    """
    Zmienna określająca styl rysowania konturu ściany.
    """
    BrushColour = wx.Colour(190, 200, 170, 10)
    """
    Zmienna określająca kolor wypełnienia ściany.
    """
    BrushStyle = wx.BRUSHSTYLE_SOLID
    """
    Zmienna określająca styl wypełnienia ściany.
    """
    
    # TODO: szerokość ściany
    
    def __init__(self, point1, point2):
        """
        Konstruktor tworzy obiekt ściany o podanych parametrach.
        """
        
        self._Point1 = point1
        self._Point2 = point2
    
    
    def getPoint1(self):
        """
        Konstruktor tworzy obiekt ściany o podanych parametrach.
        
        @param point1: Parametr określający punkt będący początkiem ściany.
        @param point2: Parametr określający punkt będący końcem ściany.
        """

        return self._Point1
    
    
    def getPoint2(self):
        """
        Funkcja zwracająca położenie drugiego punktu ściany.
        
        @return: Położenie końcowego punktu ściany.
        """

        return self._Point2
    
    
    def draw(self, Dc, CanvasPoint1, CanvasPoint2):
        """
        Procedura rysująca ścianę na płótnie w miejscu podanych współrzędnych.
        
        @param Dc: Parametr ustawiający sposób rysowania ściany na podstawie
            atrubutów klasy.
        @param CanvasPoint1: Parametr określający współrzędne punktu 
            początkowego ściany na płótnie.
        @param CanvasPoint2: Parametr określający współrzędne punktu 
            końcowego ściany na płótnie.
        """
        
        Dc.SetPen(wx.Pen(Wall.PenColour, Wall.PenWidth, Wall.PenStyle))
        Dc.SetBrush(wx.Brush(Wall.BrushColour, Wall.BrushStyle))
        
        CanvasPositionX1 = CanvasPoint1.getPositionX()
        CanvasPositionY1 = CanvasPoint1.getPositionY()
        CanvasPositionX2 = CanvasPoint2.getPositionX()
        CanvasPositionY2 = CanvasPoint2.getPositionY()
        
        Dc.DrawLine(CanvasPositionX1, CanvasPositionY1, CanvasPositionX2, CanvasPositionY2)
        